// Package public  基础lib
package public

/***************

时间的定义信息：

字段名               是否必须        允许的值          允许的特定字符
秒(Seconds)           是            0-59              * / , -
分(Minutes)           是            0-59              * / , -
时(Hours)           是            0-23              * / , -
日(Day of month)   是            1-31              * / , – ?
月(Month)           是            1-12 or JAN-DEC      * / , -
星期(Day of week)  否            0-6 or SUM-SAT    * / , – ?
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
************/
import (
	"fmt"
	"runtime"

	"github.com/jakecoffman/cron"
)

// MsgTask 任务管理 发送微博 163邮箱
type MsgTask struct {
	content string
}

//Config 全局配置文件
type Config struct {
	FfmpegPath string `json:"ffmpeg_path"`
	TimeSleep  string `json:"time_sleep"`
	GitPath    string `json:"git_path"`
	MousePath  string `json:"MousePath"`
	DailyPath  string `json:"DailyPath"`
}

// Run 执行
func (t MsgTask) Run() {

	SendMailBy163(t.content)
	WeiboDailyThinking(t.content)
}

// DailyJob 任务管理 同上 重复
type DailyJob struct {
	content string
}

// Run 执行
func (t DailyJob) Run() {
	fmt.Println(t.content)
	SendMailBy163(t.content)
}

// DailyWeibo 只发送微博
type DailyWeibo struct {
	content string
}

// Run 执行
func (t DailyWeibo) Run() {

	dialyWeibo()
}

// CloseWindow 对windo操作的任务管理接口
type CloseWindow struct {
	content string
}

// Run 执行
func (t CloseWindow) Run() {
	ShutDownPc()
}

// GitCommit 对windo操作的任务管理接口
type GitCommit struct {
	content string
}

// Run 执行
func (r GitCommit) Run() {
	RunBatCommand(r.content)
}

// Daily3Job 对windo操作的任务管理接口
type Daily3Job struct {
	content string
}

// Run 执行
func (t Daily3Job) Run() {
	t.content = GenDailyTip()
	SendMailBy163(t.content)
}

// CronDaily 任务调度
func CronDaily(pdata *Config) {
	cron := cron.New()

	if runtime.GOOS == "linux" {

		// 6:00
		weiboJob := "0 10 6 * * *"
		weiboName := "每日复盘"
		cron.AddJob(weiboJob, DailyWeibo{weiboName}, weiboName)

		//每天5:30结束
		checkJob := "0 0 17 * * *"
		checkName := "每日晚上提醒"
		cron.AddJob(checkJob, Daily3Job{checkName}, checkName)

	} else if runtime.GOOS == "windows" {
		//fmt.Println("windows")

		//		//定时任务 调用bat命令 提交代码
		//		githubJob := "0 0 17 * * *"
		//		githuName := "17:提交代码"
		//		cron.AddJob(githubJob, CmdJob{pdata.GitPath, RunBatCommand}, githuName)

		//		// 周三 周五：17:50 自动关机
		//		closeJob := "0 50 17 * * 1,3,5"
		//		closeName := "每日复盘"
		//		cron.AddJob(closeJob, CloseWindow{closeName}, closeName)

	}

	cron.Start()

}
